﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.BusinessEntityToDataContract
{
    /// <summary>
    /// Tradutor de Tipo de Conta
    /// </summary>
    public class TipoConta
    {
        #region Métodos
        /// <summary>
        /// Traduz de BusinessEntity.TipoConta para DataContract.Response.TipoContaResponse
        /// </summary>
        /// <param name="from">DataContract.Response.TipoContaResponse</param>
        /// <returns>BusinessEntity.TipoConta</returns>
        public DataContract.Response.TipoContaResponse ToTipoContaResponse(BusinessEntity.TipoConta from) 
        {
            DataContract.Response.TipoContaResponse to = new DataContract.Response.TipoContaResponse();
            to.ApelidoCliente = from.ApelidoCliente;
            to.CodigoCliente = from.CodigoCliente;
            to.Especialista = from.Especialista;
            if (from.TipoCliente != null)
            {
                switch (from.TipoCliente.Value)
                {
                    case BusinessEntity.Enum.TipoCliente.AdministradoConcorrente:
                        to.TipoCliente = DataContract.Enum.TipoCliente.AdministradoConcorrente;
                        break;
                    case BusinessEntity.Enum.TipoCliente.CarteiraPropria:
                        to.TipoCliente = DataContract.Enum.TipoCliente.CarteiraPropria;
                        break;
                    case BusinessEntity.Enum.TipoCliente.ContaErro:
                        to.TipoCliente = DataContract.Enum.TipoCliente.ContaErro;
                        break;
                    default:
                        break;
                }
            }

            return to;
            
        }

        /// <summary>
        /// Traduz de Lista de BusinessEntity.TipoConta para Lista de DataContract.Response.TipoContaResponse
        /// </summary>
        /// <param name="from">Lista de DataContract.Response.TipoContaResponse</param>
        /// <returns>Lista de BusinessEntity.TipoConta</returns>
        public List<DataContract.Response.TipoContaResponse> ToTipoContaResponse(List<BusinessEntity.TipoConta> from) 
        {
            List<DataContract.Response.TipoContaResponse> to = new List<DataContract.Response.TipoContaResponse>();
            foreach(BusinessEntity.TipoConta tipoConta in from)        
                to.Add(ToTipoContaResponse(tipoConta));

            return to;
        }

        #endregion
    }
}
